package org.example.commonapi.domain.onlineCode;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.NotNull;

@Data
@Document(collection = "test_group")
@AllArgsConstructor
@NoArgsConstructor
public class TestGroup {

    /**
     * 主键ID
     */
    private String id;
    /*
     * 参数	说明
     * JSON	通过JSON直接将测试集上传服务器本地
     * URL	通过URL，一般来说也就是对象存储的URL，在服务器下载测试集然后维护这个测试集
     * FILE	通过文件上传测试集
     * 这三种方式通过参数"type"进行区分，可接受的值为JSON、URL、file，不区分大小写。
     */
    /**
     * 文件类型,参数如上
     */
    @NotNull(message = "文件类型不能为空")
    private String type;
    /**
     * 文件具体内容。当type为file时，这个参数可以为空。
     */
    private String content;
    /**
     * 当type为file时，这个参数才有效，仅支持扩展名为.json的文件。
     */
    private MultipartFile file;

    /**
     * 题目ID，通过上传题目第一步获取
     */
    @Field("problem_id")
    @NotNull(message = "题目ID不能为空")
    private String problemId;

    @Field("test_group_id")
    private String testGroupId;

    public TestGroup(String type, String content, MultipartFile file, String problemId) {
        this.type = type;
        this.content = content;
        this.file = file;
        this.problemId = problemId;
    }

    public TestGroup(String json, String problemId, String testGroupId) {
        this.content=json;
        this.problemId = problemId;
        this.testGroupId = testGroupId;
    }

}
